home *** CD-ROM | disk | FTP | other *** search
- #ifndef CLASS_DEFINE
- struct fd_callback
- {
- struct ol_object super;
- int (*(f))(struct fd_callback **self, int fd);
- };
- extern struct ol_class fd_callback_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- struct ol_class fd_callback_class =
- { STATIC_HEADER,
- 0, "fd_callback", sizeof(struct fd_callback),
- NULL,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct close_callback
- {
- struct ol_object super;
- int (*(f))(struct close_callback *self, int reason);
- };
- extern struct ol_class close_callback_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- struct ol_class close_callback_class =
- { STATIC_HEADER,
- 0, "close_callback", sizeof(struct close_callback),
- NULL,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct nonblocking_fd
- {
- struct resource super;
- struct nonblocking_fd *next;
- int fd;
- struct ol_string *fname;
- int to_be_closed;
- int close_reason;
- struct close_callback *close_callback;
- void (*(prepare))(struct nonblocking_fd *self);
- int want_read;
- void (*(read))(struct nonblocking_fd *self);
- int want_write;
- void (*(write))(struct nonblocking_fd *self);
- void (*(really_close))(struct nonblocking_fd *self);
- };
- extern struct ol_class nonblocking_fd_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_nonblocking_fd_mark(struct ol_object *o,
- void (*mark)(struct ol_object *o))
- {
- struct nonblocking_fd *i = (struct nonblocking_fd *) o;
- mark((struct ol_object *) i->next);
- mark((struct ol_object *) i->close_callback);
- }
-
- static void do_nonblocking_fd_free(struct ol_object *o)
- {
- struct nonblocking_fd *i = (struct nonblocking_fd *) o;
- ol_string_free(i->fname);
- }
-
- struct ol_class nonblocking_fd_class =
- { STATIC_HEADER,
- &resource_class, "nonblocking_fd", sizeof(struct nonblocking_fd),
- do_nonblocking_fd_mark,
- do_nonblocking_fd_free
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct io_fd
- {
- struct nonblocking_fd super;
- int fsync;
- struct read_handler *handler;
- struct abstract_buffer *buffer;
- };
- extern struct ol_class io_fd_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_io_fd_mark(struct ol_object *o,
- void (*mark)(struct ol_object *o))
- {
- struct io_fd *i = (struct io_fd *) o;
- mark((struct ol_object *) i->handler);
- mark((struct ol_object *) i->buffer);
- }
-
- struct ol_class io_fd_class =
- { STATIC_HEADER,
- &nonblocking_fd_class, "io_fd", sizeof(struct io_fd),
- do_io_fd_mark,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct address_info
- {
- struct ol_object super;
- int family;
- int (*(convert2sockaddr))(struct address_info *self, int, struct sockaddr *);
- int (*(bind_socket))(struct address_info *self, int);
- int (*(connect_socket))(struct address_info *self, int);
- };
- extern struct ol_class address_info_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- struct ol_class address_info_class =
- { STATIC_HEADER,
- 0, "address_info", sizeof(struct address_info),
- NULL,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct unix_address_info
- {
- struct address_info super;
- struct ol_string *path;
- };
- extern struct ol_class unix_address_info_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_unix_address_info_free(struct ol_object *o)
- {
- struct unix_address_info *i = (struct unix_address_info *) o;
- ol_string_free(i->path);
- }
-
- struct ol_class unix_address_info_class =
- { STATIC_HEADER,
- &address_info_class, "unix_address_info", sizeof(struct unix_address_info),
- NULL,
- do_unix_address_info_free
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct inet_address_info
- {
- struct address_info super;
- struct ol_string *ip;
- struct sockaddr_in sa;
- UINT32 port;
- };
- extern struct ol_class inet_address_info_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_inet_address_info_free(struct ol_object *o)
- {
- struct inet_address_info *i = (struct inet_address_info *) o;
- ol_string_free(i->ip);
- }
-
- struct ol_class inet_address_info_class =
- { STATIC_HEADER,
- &address_info_class, "inet_address_info", sizeof(struct inet_address_info),
- NULL,
- do_inet_address_info_free
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct fd_listen_callback
- {
- struct ol_object super;
- int (*(f))(struct fd_listen_callback *self, int, struct address_info *);
- };
- extern struct ol_class fd_listen_callback_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- struct ol_class fd_listen_callback_class =
- { STATIC_HEADER,
- 0, "fd_listen_callback", sizeof(struct fd_listen_callback),
- NULL,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct listen_fd
- {
- struct nonblocking_fd super;
- struct fd_listen_callback *callback;
- };
- extern struct ol_class listen_fd_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_listen_fd_mark(struct ol_object *o,
- void (*mark)(struct ol_object *o))
- {
- struct listen_fd *i = (struct listen_fd *) o;
- mark((struct ol_object *) i->callback);
- }
-
- struct ol_class listen_fd_class =
- { STATIC_HEADER,
- &nonblocking_fd_class, "listen_fd", sizeof(struct listen_fd),
- do_listen_fd_mark,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct connect_fd
- {
- struct nonblocking_fd super;
- struct fd_callback *callback;
- };
- extern struct ol_class connect_fd_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_connect_fd_mark(struct ol_object *o,
- void (*mark)(struct ol_object *o))
- {
- struct connect_fd *i = (struct connect_fd *) o;
- mark((struct ol_object *) i->callback);
- }
-
- struct ol_class connect_fd_class =
- { STATIC_HEADER,
- &nonblocking_fd_class, "connect_fd", sizeof(struct connect_fd),
- do_connect_fd_mark,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct callback
- {
- struct ol_object super;
- void (*(f))(struct callback *self);
- };
- extern struct ol_class callback_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- struct ol_class callback_class =
- { STATIC_HEADER,
- 0, "callback", sizeof(struct callback),
- NULL,
- NULL
- };
- #endif /* !CLASS_DECLARE */
-
- #ifndef CLASS_DEFINE
- struct io_backend
- {
- struct ol_object super;
- int reloading;
- struct nonblocking_fd *files;
- struct ol_queue callouts;
- };
- extern struct ol_class io_backend_class;
- #endif /* !CLASS_DEFINE */
-
- #ifndef CLASS_DECLARE
- static void do_io_backend_mark(struct ol_object *o,
- void (*mark)(struct ol_object *o))
- {
- struct io_backend *i = (struct io_backend *) o;
- mark((struct ol_object *) i->files);
- do_mark_callouts(&(i->callouts), mark);
- }
-
- static void do_io_backend_free(struct ol_object *o)
- {
- struct io_backend *i = (struct io_backend *) o;
- do_free_callouts(&(i->callouts));
- }
-
- struct ol_class io_backend_class =
- { STATIC_HEADER,
- 0, "io_backend", sizeof(struct io_backend),
- do_io_backend_mark,
- do_io_backend_free
- };
- #endif /* !CLASS_DECLARE */
-
-